package com.itheima.d7_generics_interface;
/*
     目标：掌握泛型接口的定义和使用。
     场景：系统需要处理学生和老师的数据，需要提供2个功能：保存对象数据。根据名称查询数据。

     分析 :
        1 定义学生类和老师类
        2 定义接口用来处理学生或者老师 , 定义2个抽象功能
        3 定义实现类进行测试
 */

//定义接口（常量、抽象方法）
interface ProcessingDataInterface<T>{
    //可以处理老师数据
    //可以处理学生数据
    public void process(T obj);//方法中形参类型不确定（老师or学生），可以使用泛型类型代替
}
class Teacher{}
class Student{}
//方式1：在实现接口时直接明确泛型的类型
class TeacherManager implements ProcessingDataInterface<Teacher>{
    @Override
    public void process(Teacher obj) {

    }
}
//方式2： 在实现接口时未指定泛型类型，实现类继承了接口上的泛型类型（此时实现类变为：泛型类）
class StudentManager<T> implements ProcessingDataInterface<T>{
    @Override
    public void process(T obj) {

    }
}

public class Test1 {
    public static void main(String[] args) {
        //创建接口实现类对象
        TeacherManager teacher = new TeacherManager();

        //创建泛型类对象时明确泛型类型
        StudentManager<Student> student = new StudentManager<>();

    }
}


